package com.wang.jmonkey.modules.system.api;

import com.github.pagehelper.PageInfo;
import com.wang.jmonkey.common.annotation.Log;
import com.wang.jmonkey.common.result.HttpPageResult;
import com.wang.jmonkey.common.result.HttpResult;
import com.wang.jmonkey.modules.system.model.entity.SystemRoleEntity;
import com.wang.jmonkey.modules.system.model.query.SystemRoleQuery;
import com.wang.jmonkey.modules.system.service.SystemRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 角色信息(SystemRole)表控制层
 *
 * @author HeJiawang
 * @since 2021-05-14 16:10:59
 */
@RestController
@RequestMapping("/role")
public class SystemRoleApi {

    /**
     * 服务对象
     */
    @Autowired
    private SystemRoleService service;

    @Log("角色信息管理——分页查询角色信息")
    @GetMapping(value = "/page")
    public HttpPageResult<SystemRoleEntity> page(SystemRoleQuery query) {
        return new HttpPageResult<>(service.page(query));
    }

    /**
     * 获取所有角色信息
     * @return 角色信息
     */
    @GetMapping(value = "/listAll")
    public HttpResult<List<SystemRoleEntity>> listAll() {
        return new HttpResult<>(service.listAll());
    }

    /**
     * 新增角色
     * @param role 角色信息
     * @return true 新增成功
     */
    @Log("角色信息管理——新增角色信息")
    @PostMapping(value = "/save")
    public HttpResult<Void> save(@RequestBody @Validated SystemRoleEntity role) {
        return new HttpResult<Void>().setSuccess(service.save(role));
    }

    /**
     * 修改角色
     * @param role 角色信息
     * @return true 修改成功
     */
    @Log("角色信息管理——修改角色信息")
    @PutMapping(value = "/update")
    public HttpResult<Void> update(@RequestBody @Validated SystemRoleEntity role) {
        return new HttpResult<Void>().setSuccess(service.updateById(role));
    }

    /**
     * 删除角色信息
     * @param id 角色id
     * @return true 删除成功
     */
    @Log("角色信息管理——删除角色信息")
    @DeleteMapping(value = "/remove/{id}")
    public HttpResult<Void> remove(@PathVariable Long id) {
        return new HttpResult<Void>().setSuccess(service.removeById(id));
    }
}
